home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ahoy 1988 January
/
Ahoy_Magazine_88-01_1988_Double_L.d64
/
Infoflow 64
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
10KB
|
327 lines
10 rem infoflow 64 (c)1987 "[195][205][194]"
20 poke53280,11:poke53281,.
30 v=53248:spbase=49152+1016:s=54272:jp=56320:deffnjf(v)=((peek(jp)and16)=.)
40 deffnm(v)=int(v/rl%):plot=53180
50 nf$="[152] [206]o [198]ile in [205]emory!":fe$="[152][198]ile [195]urrently in [205]emory!":q$=" [209][213][201][212] "
60 dimbo(7):fori=.to7:bo(i)=2^i:next:cr$=chr$(13)
70 gosub2010
80 pokev+21,.:pokev+16,16:fori=.to7:pokespbase+i,32+i:next:pokev+39,15
90 fori=v+40tov+46:pokei,6:next:fori=51200to51711:reada:pokei,a:next
100 fori=vtov+15:reada:pokei,a:next
110 fori=53000to53223:reada:pokei,a:next:sys53000
120 b$="[147][154] * [201]nfo[198]low 64 * "
130 gosub140:goto220
140 printb$:printtab(2)"[211]ave"spc(6)"[206]ew"spc(6)"[196]elete"spc(4)"[214]iew/[193]dd"
150 printtab(2)"[204]oad"spc(6)"[198]ile"spc(5)"[210]ecord"spc(4)"[210]ecord"
160 forx=.to39:print"[164]";:next:print:printtab(32)"[176][178][174][157][157][157][171][219][179][157][157][177][189]"
170 printtab(2)"[211]ort"spc(6)"[211]earch"spc(3)"[200]ardcopy"spc(2)"[195]urrent"
180 printtab(31)"[210]ecord"
190 print"[152] * (c)1987 [194]y [195]leveland [205]. [194]lakemore * ";
200 printspc(3)"[146][151][211][208][193][195][197] [201][206] [205][197][205][207][210][217] [198][207][210] 0000[151] [210]ecords!":printtab(15)"";q$;""
210 pokev+16,16:pokev,160:pokev+1,115:pokev+21,255:return
220 waitjp,16,16
230 c=peek(v+30):c=peek(v+30)and254:fori=1to7:ifbo(i)=cthenc=i
240 next
250 oncgosub300,620,800,1080,1220,1380,1430
260 x=peek(v):i=peek(v+1)
270 if(peek(v+16)and1)=1andx>8andx<60andi>150andi<187thengosub1620:goto220
280 ifi<235then220
290 waitjp,16,.:sysplot,15,24:print"[154]";q$"[157][157]?";:gosub1740:gosub1740:gosub1740
295 iffnjf(.)=.andusr(.)=.then295
296 iffnjf(.)thenpoke648,4:poke679,.:sys679
297 sysplot,15,24:print"";q$;:goto220
300 rem save/load file
310 gosub1810
320 open15,8,15:close15
330 ifst<>.thenprint"[147][196][210][201][214][197] [207][198][198] [204][201][206][197]!":gosub1830:gosub1780:gosub1750:return
340 poke198,0:print"[155][211][146]ave or [204][146]oad?"
350 wait198,1:geta$:ifa$<>"l"anda$<>"s"thengosub1780:return
360 ifa$="l"then470
370 rem save file to disk
380 ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
390 print"[147][155][211][193][214][201][206][199][160][198][201][204][197] ";ft$:a$=ft$
400 open15,8,15,"s:[201][198]]"+a$:close15:open2,8,2,"[201][198]]"+a$+",s,w"
410 j=ef-1:print#2,rl%;cr$;tl;cr$;j;cr$;n;cr$;ft$
420 forx=1ton:print#2,n$(x);cr$;l%(x):next
430 forj=1toef-1:fori=1ton:print#2,r$(j,i):nexti,j
440 close2:open15,8,15:input#15,ds,ds$:close15:print""ds$:gosub1830
450 goto600
460 rem load file
470 ifefthenprintfe$:gosub1830:gosub1780:return
480 print"[155][198]ilename:";:a=12:gosub1930:a$=in$
490 close2:open2,8,2,"[201][198]]"+a$+",s,r"
500 close15:open15,8,15:input#15,a,ds$:ifa>.then600
510 input#2,rl%,tl,ef,n,ft$
520 dimr$(tl,n),n$(n),l%(n)
530 fori=1ton:input#2,n$(i):input#2,l%(i)
540 next
550 forj=1toef
560 fori=1ton
570 get#2,a$:ifa$<>cr$thenr$(j,i)=r$(j,i)+a$:goto570
580 nexti,j:ef=ef+1:cr=1
590 close2:input#15,ds,ds$
600 print""ds$;:close15:gosub1830
610 gosub1780:gosub1750:return
620 rem initialize new file
630 gosub1810:ifefthenprint"";fe$:gosub1830:gosub1780:gosub1750:return
640 rl%=.:tl=.:print"[155] [198]ilename:";:a=10:gosub1930:ft$=in$
650 print"[206]umber of fields:";:a=2:gosub1930:n=val(in$):ifn<1orn>22then650
660 dimn$(n),l%(n)
670 forx=1ton:print"[206]ame [198]ield #";x;"[157]:";:a=39:gosub1930:n$(x)=in$
680 a$="":print"[204]ength [198]ield #";x;"[157]:";:a=3:gosub1930:a$=in$
690 ifval(a$)>.andval(a$)<255thenl%(x)=abs(val(a$)):goto710
700 print"[196]efault (160) !":l%(x)=160
710 rl%=rl%+l%(x):next
720 rl%=rl%+3*(n+1)+5:tl=fnm(fre(.)):ef=2:dimr$(tl,n)
730 print"[212]his file will permit at least"
740 printfnm(fre(.));" [210]ecords."
750 print"[193][146]ccept or [210][146]eject?"
760 geta$:ifa$<>"a"anda$<>"r"then760
770 ifa$="r"thenrun
780 print"[154][197]mpty [198]ile [195]reated.";:cr=1:ef=1:gosub1830:gosub1780:gosub1750
790 return
800 rem delete record(s)
810 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
820 print"[155][195][146]urrent [210]ecord, [211][146]can [198]ile, [193][146]ll or [197][146]xit?"
830 geta$:ifa$<>"e"anda$<>"s"anda$<>"c"anda$<>"a"then830
840 ifa$="e"thengosub1780:return
850 ifa$="s"then990
860 ifa$="c"thengosub910:gosub1780:return
870 print"[196][197][204][197][212][197][160][193][204][204][160][210][197][195][207][210][196][211]![160][193][210][197][160][217][207][213][160][211][213][210][197]?[160]([217]/[206])"
880 geta$:ifa$<>"y"anda$<>"n"then880
890 ifa$="y"thenrun
900 gosub1780:return
910 print"[196][197][204][197][212][201][206][199]...."
920 fori=1ton:r$(cr,i)="":next:forx=1toef-1
930 ifr$(x,1)=""thenfori=1ton:r$(x,i)=r$(x+1,i):r$(x+1,i)="":nexti
940 nextx
950 ifef>1andef<>crthenef=ef-1
960 gosub1860:print"[186] [210][197][195][207][210][196][160]#";cr;"[196][197][204][197][212][197][196]."
970 gosub1830:return
980 goto1070
990 poke198,.:print"[211][200][201][198][212]-[197] [212][207][160][197]xit, [211][200][201][198][212]-[196] [212][207] [196]elete "
1000 geta$:jy=usr(.):ifjy=.anda$=""then1000
1010 ifjy=3thencr=cr+1
1020 ifjy=7thencr=cr-1
1030 ifa$="[196]"thengosub910
1040 ifa$="[197]"thengosub1780:return
1050 ifcr>efthencr=ef
1060 ifcr<1thencr=1
1070 gosub1860:goto1000
1080 rem view records
1090 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
1100 gosub1110:gosub1780:return
1110 gosub1850
1120 jy=usr(.):a=cr:iffnjf(.)thenreturn
1130 ifjy=3thencr=cr+1:ifcr>efthencr=ef:goto1110
1140 ifjy=7thencr=cr-1:ifcr<1thencr=1:goto1110
1150 ifjy=1thenprint"";:goto1180
1160 ifcr<>athen1110
1170 goto1120
1180 print"[155]";:forx=1ton:printn$(x);":";
1190 a=l%(x):in$=" ":gosub1940:print"[155]";:ifin$<>" "thenr$(cr,x)=mid$(in$,2)
1200 next:ifcr=efandr$(cr,1)<>""thenef=cr+1:ifef>tlthenef=tl
1210 goto1110
1220 rem sort records
1230 rem shell metzner algorithm
1240 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
1250 forx=1ton:printx;"[157]. ";n$(x):next
1260 print"[155][211]ort by which [198]ield? (1 -";n;"[157]) :";:a=2:gosub1930
1270 x=val(in$):ifx<1orx>nthen1260
1280 m=ef-1:print:print"[211]tand by...[211]orting [198]ile!"
1290 m=int(m/2):ifm=.then1370
1300 k=(ef-1)-m:j=1
1310 i=j
1320 l=i+m:ifr$(i,x)<=r$(l,x)then1350
1330 forr=1ton:a$=r$(i,r):r$(i,r)=r$(l,r):r$(l,r)=a$:next
1340 i=i-m:ifi>=1then1320
1350 j=j+1:ifj>kthen1290
1360 goto1310
1370 print"[186] [211][207][210][212][160][195][207][205][208][204][197][212][197][196].":gosub1830:gosub1780:gosub1750:return
1380 rem search records, find string
1390 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
1400 print"[155][211]earch [211]tring:";:a=23:gosub1930:s$=in$
1410 forj=1toef-1:fori=1ton:ifleft$(r$(j,i),len(s$))=s$thencr=j:gosub1110:cr=j
1420 nexti,j:print"[155] [186] [211]earch [195]ompleted.";:cr=1:gosub1830:gosub1780:return
1430 rem hardcopy
1440 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
1450 print"[147]*** [210]ecord [210]ange for [200]ardcopy *** "
1460 a$="":print"[198]rom:";:a=3:gosub1930
1470 f=val(in$)
1480 iff<1orf>efthen1460
1490 a$="":print"[212]o:";:a=3:gosub1930
1500 l=val(in$)
1510 ifl<1orl>efthen1490
1520 print"[147]":print"[155][186] [208][210][201][206][212][201][206][199] [198][201][204][197] ";ft$
1530 open15,4,15:close15
1540 ifst<>.thenprint"[208][210][201][206][212][197][210] [207][198][198] [204][201][206][197]!!!!":gosub1830:gosub1780:return
1550 open4,4,7:cmd4
1560 forj=ftol:cr=j:gosub1880:print:next
1570 print#4,""
1580 close4
1590 print"[155][186] [196]one.":gosub1780
1600 gosub1750:return
1610 rem current record bar
1620 ifef=.thenreturn
1630 waitjp,16,.
1640 iffnjf(.)thenin$=str$(cr):sysplot,32,20:print"";:waitjp,16,.:goto1790
1650 jy=usr(.)
1660 ifjy=3thencr=cr+1
1670 ifjy=7thencr=cr-1
1680 ifjy=1thencr=cr+10
1690 ifjy=5thencr=cr-10
1700 ifcr<1thencr=1
1710 ifcr>efthencr=ef
1720 in$=str$(cr):sysplot,32,20:print"[154]";:gosub1910
1730 goto1640
1740 rem bell
1750 pokes+24,15:pokes+5,.:pokes+6,247:pokes+1,50:pokes+4,17
1760 pokes,2:forx=.to175:next:pokes+4,16:return
1770 rem switch to command screen
1780 gosub140:sysplot,23,23:print"[152]";:ifrl%thenin$=str$(fnm(fre(.))):gosub1910
1790 gosub1750:in$=str$(cr):sysplot,32,20:print"";:gosub1910:return
1800 rem switch to text
1810 pokev+21,.:printb$:gosub1750:return
1820 rem delay
1830 fori=.to5000:next:return
1840 rem print one record
1850 poke780,.:poke781,1:poke782,.:poke783,.:sys59903
1860 fori=2to24:poke780,.:poke781,i:poke782,.:poke783,.:sys59903:next
1870 print"";
1880 print"[155] [210][197][195][207][210][196][160]# ";cr;"[157] in [198][201][204][197][160]";ft$;" "
1890 forx=1ton:print"[155]";n$(x);": ";"";r$(cr,x):next:return
1900 rem output right justified string
1910 printright$("0000"+(right$(in$,len(in$)-1)),4):return
1920 rem safe basic input
1930 fori=.to39:printchr$(32);:next:print"[145]";:in$=""
1940 poke198,.:poke204,.
1950 wait198,15:getz$:z=asc(z$):ifz>95and(z<193orz>218)then1950
1960 zl=len(in$):ifzl=athen1980
1970 ifz>31thenin$=in$+z$:printz$;:goto1950
1980 ifz=13andzlthenpoke204,1:print" ":return
1990 ifz=20andzlthenin$=left$(in$,zl-1):print" [157][157] [157]";
2000 goto1950
2010 poke56578,peek(56578)or3:poke56576,peek(56576)and252
2020 poke53272,peek(53272)and15:poke648,192:poke53272,(peek(53272)and240)or12
2030 printchr$(147)chr$(8)chr$(14)"[154][208]lease [211]tand [194]y...."
2040 forx=1to33:reada:poke680+x,a:next:poke56334,peek(56334)and254
2050 poke1,peek(1)and251:sys681:poke1,peek(1)or4:poke56334,peek(56334)or1
2060 reada:ifa=-1thenreturn
2070 forx=.to7:readd:poke63488+a*8+x,d:next:goto2060
2080 data 169,,133,251,133,253,169,208,133,252,169,240,133,254,162,16
2090 data 160,,177,251,145,253,136,208,249,230,252,230,254,202,208,240,96
2100 data91,250,12,248,64,127,64,64,126
2110 data107,169,169,33,32,32,32,32,0
2120 data110,254,6,10,18,34,194,66,66
2130 data112,224,191,129,129,255,,32,112
2140 data113,64,64,127,64,64,127,64,127
2150 data114,15,16,32,64,255,128,255,129
2160 data115,130,2,2,2,130,130,130,130
2170 data125,130,130,130,130,132,136,144,224,-1
2180 rem sprite data
2190 data0,,,,,0
2200 data0,,,3,255,128
2210 data2,1,,2,2,0
2220 data2,4,,2,2,0
2230 data2,1,,2,,128
2240 data2,96,64,2,144,32
2250 data3,8,16,,4,8
2260 data0,2,4,,1,2
2270 data0,,129,,,65
2280 data0,,34,,,20
2290 data0,,8,,,0
2300 data0,7,255,240,7,227
2310 data240,7,221,224,7,221
2320 data240,7,221,240,7,227
2330 data240,7,255,240,7,247
2340 data240,7,247,240,7,247
2350 data240,7,255,240,,0
2360 data0,255,255,255,198,0
2370 data3,197,255,227,197,64
2380 data35,197,255,227,192,0
2390 data3,255,255,255,,0
2400 data0,,128,,,64
2410 data0,,36,15,255,20
2420 data16,3,12,32,5,124
2430 data64,9,,255,241,0
2440 data128,17,,143,17,0
2450 data128,17,,255,241,0
2460 data128,17,,143,17,0
2470 data128,17,,128,17,0
2480 data255,241,,128,17,0
2490 data128,17,,143,18,0
2500 data128,20,,255,248,0
2510 data0,,,,,0
2520 data0,60,,,66,0
2530 data3,255,192,4,,32
2540 data3,255,192,2,,64
2550 data2,82,64,2,82,64
2560 data2,82,64,2,82,64
2570 data2,82,64,2,82,64
2580 data2,82,64,2,82,64
2590 data2,82,64,2,,64
2600 data3,255,192,,,0
2610 data0,,,,,0
2620 data0,,,,,0
2630 data0,,,,,255
2640 data0,3,,192,4,60
2650 data32,8,66,16,16,153
2660 data8,32,189,4,16,153
2670 data8,8,66,16,4,60
2680 data32,3,,192,,255
2690 data0,,,,,0
2700 data0,,,,,0
2710 data0,,,,,0
2720 data0,255,,,8,15
2730 data255,20,16,3,34,32
2740 data5,62,64,9,34,255
2750 data241,34,128,17,,143
2760 data17,60,128,17,34,255
2770 data241,34,128,17,60,143
2780 data17,34,128,17,34,128
2790 data17,60,255,241,,128
2800 data17,28,128,17,34,143
2810 data18,32,128,20,32,255
2820 data248,34,,,28,255
2830 data0,,,,,0
2840 data15,128,,1,131,255
2850 data2,130,1,4,130,1
2860 data8,,1,16,63,225
2870 data32,32,63,64,32,32
2880 data128,,32,7,252,32
2890 data4,7,224,4,4,0
2900 data0,4,,255,132,0
2910 data128,252,,128,128,0
2920 data128,128,,128,128,0
2930 data255,128,,255,,0
2940 data0,,127,255,,64
2950 data1,,94,1,,64
2960 data1,,95,253,,64
2970 data1,16,95,253,8,64
2980 data1,252,95,253,8,64
2990 data1,16,95,253,,64
3000 data1,,95,253,,64
3010 data1,,95,253,,64
3020 data1,,64,1,,127
3030 data255,,,,,0
3040 data0,255
3050 rem icon locations
3060 data 165,160,45,80,117,80,200,80,30
3070 data 80,45,162,130,160,205,160
3080 rem interrupt routine
3090 data 120,169,31,141,20,3,169,207,141,21,3,169,166,141,17
3100 data 3,169,207,141,18,3,88,96,173,,220,41,15,133,253
3110 data 169,15,56,229,253,168,185,221,207,240,8,141,168,2,160
3120 data 0,32,60,207,76,163,207,173,168,2,10,170,189,202,207
3130 data 8,152,10,170,40,48,25,240,43,173,220,207,24,125,0
3140 data 208,157,,208,144,31,169,1,77,16,208,141,16,208,76
3150 data 120,207,189,,208,56,237,220,207,157,,208,176,8,169
3160 data 1,77,16,208,141,16,208,173,168,2,10,170,232,189,202
3170 data 207,8,152,10,170,232,40,48,15,240,23,173,220,207,24
3180 data 125,,208,157,,208,76,162,207,189,,208,56,237,220
3190 data 207,157,,208,96,76,49,234,173,,220,41,15,133,253
3200 data 169,15,56,229,253,168,185,221,207,168,169,,108,5,0
3210 data 32,155,183,138,72,32,155,183,104,168,24,76,240,255,0
3220 data 0,,255,1,255,1,,1,1,,1,255,1,255,0
3230 data 255,255,2,,1,5,,7,8,6,,3,2,4